During digital signal processing, a common occurrence is to find that the sampling rate must be changed e.g. a signal is read from an analog-to-digital converter (A/D) which operates at a first sampling rate, digitally processed and then fed to a digital-to-analog converter (D/A) which operates at a second sampling rate. During this process, the digital values are also filtered to exhibit a particular frequency/bandwidth characteristic.
The sampling rate conversion process determines the digital value magnitudes of signals at the second sampling rate from the digital values of signals occurring at the first sampling rate. If the first and second data sampling rates are integer multiples of each other, determination of output signal magnitudes can be easily accomplished by either interpolation or decimation. If however, the first and second sampling rates are not integer multiples, the solution to the problem becomes more computationally complex.
The prior art has employed several techniques to accomplish sampling rate conversion (with filtering) and has used both infinite impulse response (IIR) and finite impulse response (FIR) filters. The sampling rate conversion process has involved a multiplication (by interpolation) of the input sampling rate by an integer factor to achieve a higher frequency sampling rate which is also an integer multiple of the desired second sampling rate. Then, after filtering, the integer multiple sampling rate is divided (by decimation) by an integer value to arrive at the desired second sampling rate.
As an example, a digital signal having a sampling rate of 20 kHz is sent to a D/A converter that has a sampling rate of 97.2 kHz. Thus, the signal with a 20 kHz sampling rate must be changed to a 97.2 kHz sampling rate and the signal must be filtered using specified filter characteristics. If an IIR filter is employed, the 20 kHz sampling rate data may be interpolated by a factor of 243 to a sampling rate of 4,860 kHz (4,860 kHz being a 50 times multiple of the D/A converter sampling rate of 97.2 kHz). The resulting signal with 4,860 kHz sampling rate data is then filtered using an IIR filter and thereafter, the output is decimated by a factor of 50 to achieve the desired output data sampling rate of 97.2 kHz.
As is known to those skilled in the art, the response of an IIR filter is a function of current and past input signal samples and past output signal samples. Its dependency on past outputs gives rise to an infinite duration of the filter's output response even when input values have stopped. IIR filter functions must be computed at the input sampling rate regardless of subsequent data decimation operations that ignore some of the filter's outputs. This is because each output is required in order to compute the filter's subsequent outputs. In the exemplary case of a sampling rate conversion from 20 kHz to 97.2 kHz, the very high integer multiple sampling frequency (i.e. 4,860 kHz) requires that the IIR sample conversion procedure perform a very large number arithmetic operations even though the IIR filter only requires approximately eight coefficients to satisfy the filter requirement.
When using an FIR filter, a signal with a 20 kHz sampling rate data is again interpolated by a factor of 243 to 4,860 kHz, filtered and then decimated by a factor of 50 to 97.2 kHz. However, the FIR filter enables interpolation and decimation to be combined so that all calculations are accomplished at the second sampling frequency of 97.2 kHz. The FIR filter avoids the computational problems of the IIR filter because it employs only a finite number of past input samples. While the computational load using the FIR filter is low compared to the IIR filter, the number of coefficients for the FIR filter is large (approximately 1000) and because of this, stored coefficients consume a substantial amount of memory.
Accordingly, it is an object of this invention to provide a sampling frequency conversion method that places minimum requirements upon supporting computational apparatus.